import { isUndefined } from "../utils/util";

export default {
    /**
     * 处理 Tab 切换事件，设置当前激活的 Tab 索引
     * @param {Object} e - 事件对象，包含当前点击的 Tab 信息
     */
    $onTab(e) {
        let { parents, index } = e.currentTarget.dataset;
        if (isUndefined(parents)) parents = 'tab'; // 默认父级标识为 'tab'
        this.setData({
            [parents]: index // 更新当前激活的 Tab 索引
        });
    },

    /**
     * 选择列表项，支持单选和多选功能
     * @param {Object} e - 事件对象，包含当前点击的列表项信息
     */
    $selectItem(e) {
        let { parents, index, setname, radio } = e.currentTarget.dataset;
        if (isUndefined(setname)) setname = 'select'; // 默认属性名称为 'select'

        let items = this.data[parents].slice(); // 创建数据的副本

        if (radio) {
            // 单选模式：只有点击的项目被选中，其他都不选中
            items.forEach((x, i) => {
                x[setname] = i == index;
            });
        } else {
            // 多选模式：切换点击项目的选中状态
            items[index][setname] = !items[index][setname];
        }

        this.setData({ [parents]: items }); // 更新数据，触发视图重渲染
    }
}
